package org.mozhu.mboot.core.data.entity;

/**
 * <p>实体实现该接口，表示需要进行状态管理
 */
public interface Stateable<T extends Enum<? extends Stateable.Status>> {

    void setStatus(T status);

    T getStatus();


    /**
     * 标识接口，所有状态实现，需要实现该状态接口
     */
    interface Status {
    }

    enum ProcessStatus implements Status {

        pending("process.status.pending"), success("process.status.success"), fail("process.status.fail");

        private final String info;

        private ProcessStatus(final String info) {
            this.info = info;
        }

        public String getInfo() {
            return info;
        }

    }
}
